import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Date;

/**
 * 
 * @author Maugard Matthieu & Paeta Suzy
 * @version V 1.0.0
 *
 */
public class MainFichier {
	public static void main(String[] args) {

		ClientAdministration ca = new ClientAdministration();
		Date d1 = new Date(111, 10, 18, 12, 04);
		Date d2 = new Date(111, 11, 20, 12, 04);
		Date d3 = new Date(111, 06, 06, 45, 00);
		Date d4 = new Date(111, 07, 06, 45, 00);
		ArrayList<Passager> pass = new ArrayList<Passager>();
		ArrayList<Transport> trans = new ArrayList<Transport>();

		Trajet trajet = new Trajet(Villes.MARSEILLE, Villes.NEWYORK, d1, d2);
		Trajet trajet0 = new Trajet(Villes.NICE, Villes.NEWYORK, d3, d4);

		ArrayList<Trajet> trajets = new ArrayList<Trajet>();
		trajets.add(trajet);
		trajets.add(trajet0);		
		Transport t = new Transport("boeing183", 20, trajets, Types.AVION);

		Trajet trajet2 = new Trajet(Villes.PARIS, Villes.NEWYORK, d1, d2) ;
		Trajet trajet22 = new Trajet(Villes.MARSEILLE, Villes.NEWYORK, d3, d4) ;
		ArrayList<Trajet> trajets2 = new ArrayList<Trajet>();
		trajets2.add(trajet2);
		trajets2.add(trajet22);
		Transport t2 = new Transport("bateau1", 20, trajets2, Types.BATEAU);


		Trajet trajet3 = new Trajet(Villes.NEWYORK, Villes.NICE, d1, d2) ;
		Trajet trajet33 = new Trajet(Villes.PARIS, Villes.NICE, d3, d4) ;
		ArrayList<Trajet> trajets3 = new ArrayList<Trajet>();
		trajets3.add(trajet3);
		trajets3.add(trajet33);
		Transport t3 = new Transport("bus1", 20, trajets3, Types.BUS);


		Trajet trajet4 = new Trajet(Villes.PARIS, Villes.NEWYORK, d1, d2);
		Trajet trajet44 = new Trajet(Villes.NEWYORK, Villes.NICE, d3, d4);
		ArrayList<Trajet> trajets4 = new ArrayList<Trajet>();
		trajets4.add(trajet4);
		trajets4.add(trajet44);
		Transport t4 = new Transport("avion2", 30, trajets4, Types.AVION);

		ca.getServeur().ecrire(t, false);
		ca.getServeur().ecrire(t2, true);
		ca.getServeur().ecrire(t3, true);
		ca.getServeur().ecrire(t4, true);

		System.out.println("======================= Lancement du test =======================");

		System.out.println("Ajouts des 	trajets");
		System.out.println("Cr�ations des passagers");

		System.out.println("======================= Ajouts des trajets ======================");
		trans  = ca.getServeur().reconstruireTransports();
		for(int i = 0; i < 4; i++)
		{
			ca.ajouterTransportFichier(trans.get(i));
		}
		System.out.println("======================= Cr�ations des passagers==================");


		for(int i = 0; i < 50; i++)
		{
			pass.add(new Passager("Passager" + i,"Prenom" + i));
		}

		System.out.println("========== Ajouts des passagers aux divers transports ===========");

		for(int i = 0; i < t.getCapaciteMax(); i++)
		{
			ca.getServeur().reservationFichier(pass.get(i), t,d3);
		}
		System.out.println("============== Reservation pour Transport 1 termin� =============");

		for(int i = 0; i < t2.getCapaciteMax(); i++)
		{
			ca.getServeur().reservationFichier(pass.get(i+t.getCapaciteMax()), t2, d3);
		}

		System.out.println("============== Reservation pour Transport 2 termin� =============");

		for(int i =0; i < 10; i++)
		{
			ca.getServeur().reservationFichier(pass.get(i+t.getCapaciteMax()+t2.getCapaciteMax()), t4, d1);
		}

		System.out.println("============== Reservation pour Transport 4 termin� =============");


		ca.consulterFichier();

		System.out.println("================ Ajout d'un nouveau transport ===================");
		Transport t5 = new Transport("avion5", 30, trajets, Types.AVION);

		ca.ajouterTransportFichier(t5);

		System.out.println("======================= Ajout termin� ===========================");

		ca.consulterFichier();

		System.out.println("===================== Recherche des avions ======================");

		ca.rechercheTypeFichier(Types.AVION);

		System.out.println("================= Trajets au d�part de PARIS ==================");

		ca.rechercheDepartFichier(Villes.PARIS);

		System.out.println("=============== Trajets � destination de NICE =================");

		ca.rechercheArriveFichier(Villes.NICE);

		System.out.println("=============== Trajets de NICE � NEW YORK  =================");

		ca.rechercheVillesFichier(Villes.NICE, Villes.NEWYORK);

		System.out.println("======= Trajets partant a 21h de NICE � NEW YORK ============");

		ca.rechercheDateFichier(d1, Villes.NICE, Villes.NEWYORK);


	}
}
